package FulbitoFacil.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import FulbitoFacil.excepcion.DAOExcepcion;
import FulbitoFacil.modelo.Local;
import FulbitoFacil.util.ConexionBD;

public class LocalDAO extends BaseDAO {

	public String insertar(Local l) throws DAOExcepcion {
		String mensaje = "";
		System.out.println("LocalDAO: insertar()");
		String query = "INSERT INTO local(nombreLoc,direccion,distrito,mapa,telfLoc,id_Persona) VALUES (?,?,?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		int idNroArmado = 0;
		try {
			con = ConexionBD.obtenerConexion();

			stmt = con.prepareStatement(query);
			stmt.setString(1, l.getNombre());
			stmt.setString(2, l.getDireccion());
			stmt.setString(3, l.getDistrito());
			stmt.setString(4, l.getMapa());
			stmt.setString(5, l.getTelefonoLocal());
			stmt.setInt(6, l.getId_Persona());
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			} else {
				String ConsultarIdGenerado = "SELECT LAST_INSERT_ID()";
				stmt = con.prepareStatement(ConsultarIdGenerado);
				rs = stmt.executeQuery();
				if (rs.next()) {
					idNroArmado = rs.getInt(1);
				}
				mensaje = "Cancha Grabada Correctamente";
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return mensaje;
	}

	public boolean ValidarNombreDuplicado(Local l) throws DAOExcepcion {
		boolean valor = true;
		System.out.println("LocalDao: ValidarNombreDuplicado()");
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			String query = "select count(*) as Nro from local where nombreLoc=? and id_Persona=?";
			stmt = con.prepareStatement(query);
			stmt.setString(1, l.getNombre());
			stmt.setInt(2, l.getId_Persona());
			rs = stmt.executeQuery();
			rs.first();
			int Nro = rs.getInt("Nro");
			System.out.println(Nro);
			if (Nro > 0) {
				valor = false;
			} else {
				valor = true;
			}

		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return valor;
	}

	public Collection<Local> ListarLocales() throws DAOExcepcion {
		System.out.println("Cancha: ListarLocales");
		String query = "SELECT nombreLoc,direccion,distrito,mapa,telfLoc, id_Persona FROM local";
		Collection<Local> lstLocal = new ArrayList<Local>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			rs = stmt.executeQuery();
			while (rs.next()) {
				Local objLocal = new Local();
				objLocal.setNombre(rs.getString("nombreLoc"));
				objLocal.setDireccion(rs.getString("direccion"));
				objLocal.setDistrito(rs.getString("distrito"));
				objLocal.setMapa(rs.getString("mapa"));
				objLocal.setTelefonoLocal(rs.getString("telfLoc"));
				objLocal.setId_Persona(rs.getInt("id_Persona"));
				lstLocal.add(objLocal);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return lstLocal;
	}

}
